package com.pur.zsms.storemanage.service;

import java.util.List;
import java.util.Map;

import com.pur.zsms.common.exception.GenericException;
import com.pur.zsms.common.support.PageController;
import com.pur.zsms.common.support.PaginationSupport;
import com.pur.zsms.foodmanage.food.vo.FoodVo;
import com.pur.zsms.matermanage.mater.po.MaterPo;
import com.pur.zsms.matermanage.mater.vo.MaterVo;
import com.pur.zsms.ordercustommanage.vo.SelectFoodVo;
import com.pur.zsms.pmsnmanage.menu.po.MenuPo;
import com.pur.zsms.pmsnmanage.role.vo.RoleVo;
import com.pur.zsms.pmsnmanage.user.po.UserPo;
import com.pur.zsms.pmsnmanage.user.vo.UserVo;
import com.pur.zsms.storemanage.po.StoreInDetailedPo;
import com.pur.zsms.storemanage.po.StoreInPo;
import com.pur.zsms.storemanage.po.StoreMaterDetailPo;
import com.pur.zsms.storemanage.po.StoreMaterPo;
import com.pur.zsms.storemanage.po.StoreOutDetailedPo;
import com.pur.zsms.storemanage.po.StoreOutDetailedValuePo;
import com.pur.zsms.storemanage.po.StoreOutPo;
import com.pur.zsms.storemanage.vo.SStoreMaterVo;
import com.pur.zsms.storemanage.vo.StoreInDetailedVo;
import com.pur.zsms.storemanage.vo.StoreInVo;
import com.pur.zsms.storemanage.vo.StoreMaterVo;
import com.pur.zsms.storemanage.vo.StoreOutDetailedVo;
import com.pur.zsms.storemanage.vo.StoreOutVo;
import com.pur.zsms.storemanage.vo.StoreVo;

public interface IStoreService {
	String msg = "";

	public String getMsg();

	public void setMsg(String msg);

	/**
	 * 所有仓库信息
	 * 
	 * @param
	 * @return
	 */
	public PaginationSupport listStore(PageController pageController, StoreVo storeVo) throws GenericException;

	/**
	 * 所有入库单信息
	 * 
	 * @param
	 * @return
	 */
	public PaginationSupport listStoreIn(PageController pageController, StoreInVo storeInVo) throws GenericException;

	public PaginationSupport listStoreInForSupplier(PageController pageController, StoreInVo storeInVo) throws GenericException;

	public PaginationSupport listStoreOutForSupplier(PageController pageController, StoreOutVo storeOutVo) throws GenericException;

	/**
	 * 所有出库单信息
	 * 
	 * @param
	 * @return
	 */
	public PaginationSupport listStoreOut(PageController pageController, StoreOutVo storeOutVo) throws GenericException;

	/**
	 * 所有入库单详细信息
	 * 
	 * @param
	 * @return
	 */
	public PaginationSupport listStoreInDetialed(PageController pageController, StoreInDetailedVo storeInDetailedVo) throws GenericException;

	/**
	 * 所有出库单详细信息
	 * 
	 * @param
	 * @return
	 */
	public PaginationSupport listStoreOutDetialed(PageController pageController, StoreOutDetailedVo storeOutDetailedVo) throws GenericException;

	/**
	 * 出库页面所有仓库材料信息
	 * 
	 * @param
	 * @return
	 */
	public PaginationSupport listSelectStoreMater(PageController pageController, StoreMaterVo storeMaterVo) throws GenericException;

	/**
	 * 所有仓库材料信息
	 * 
	 * @param
	 * @return
	 */
	public PaginationSupport listStoreMater(PageController pageController, StoreMaterVo storeMaterVo) throws GenericException;

	public PaginationSupport findSupplierStoreMater(PageController pageController, StoreMaterVo storeMaterVo) throws GenericException;

	public PaginationSupport findSupplierStoreMaterForMinStore(PageController pageController, StoreMaterVo storeMaterVo) throws GenericException;

	public PaginationSupport findMaterByOrderDateAndSupplierMaterType(PageController pageController, StoreMaterVo storeMaterVo)
			throws GenericException;

	public PaginationSupport findMaterByOrderDateAndSupplierMaterType3(PageController pageController, StoreMaterVo storeMaterVo)
			throws GenericException;

	public boolean addStore(StoreVo storeVo) throws GenericException;

	public boolean checkStoreOutHaveConfirm(long userId) throws GenericException;

	public void deleteStore(StoreVo storeVo) throws GenericException;

	public void deleteStoreIn(StoreInVo tStoreInVo) throws GenericException;

	public void deleteStoreOut(StoreOutVo tStoreOutVo) throws GenericException;

	public void deleteStoreIndetail(StoreInVo tStoreInVo) throws GenericException;

	public void deleteStoreOutdetail(StoreOutVo tStoreInVo) throws GenericException;

	public int addStoreIn(StoreInVo storeInVo, int userId) throws GenericException;

	public StoreInPo addStoreInForSup(StoreInVo storeInVo) throws GenericException;

	public StoreOutPo minStoreOutForSup(StoreOutVo storeOutVo) throws GenericException;

	public List<StoreOutDetailedValuePo> addStoreOutDetalValue(String storeOutId, List<StoreOutDetailedPo> storeOutDetailedPolist,
			List<StoreMaterDetailPo> storeMaterDetailPolist) throws GenericException;

	public int minStoreOut(StoreOutVo storeOutVo, UserPo po) throws GenericException;

	public void addStoreInDetailed(List<StoreMaterVo> list, int storeInId) throws GenericException;

	// 手动生成入库单
	public void addStoreInDetailedForSup(StoreInVo storeInVo, StoreInPo storeInPo) throws GenericException;

	// 分销商自动入库单生成
	public void addStoreInDetailedForDistributor(StoreInVo storeInVo, StoreInPo storeInPo) throws GenericException;

	public void minStoreOutDetailedForSup(String materdategridList, StoreOutPo storeOutPo) throws GenericException;

	public void addStoreInDetailedOne(StoreInDetailedPo tStoreInDetailedPo) throws GenericException;

	public void minStoreOutDetailed(List<StoreMaterVo> list, int storeOutId) throws GenericException;

	public void updateStoreMater(List<StoreInDetailedPo> list, UserPo po) throws GenericException;

	public void updateStoreInMaterDetailForReview(List<StoreInDetailedPo> list, int hostId, String materDay) throws GenericException;

	public void updateStoreOutMaterDetailForReview(List<StoreOutDetailedPo> list, int hostId, String materDay) throws GenericException;

	public void updateStoreInForReview(String storeInId, List<StoreInDetailedPo> list) throws GenericException;

	public void updateStoreOutForReview(String storeOutId, List<StoreOutDetailedPo> list) throws GenericException;

	public void updateStoreOut(String storeInId) throws GenericException;

	public void updateStoreMaterMin(List<StoreOutDetailedPo> list, List<StoreMaterPo> storeMaterPoList,
			List<StoreMaterDetailPo> storeMaterDetailPolist, List<StoreOutDetailedValuePo> storeOutDetailedValuePoList) throws GenericException;

	public void updateStoreOutPoForReviewStoreOut(List<StoreOutDetailedValuePo> storeOutDetailedValuePoList, StoreOutPo storeOutPo)
			throws GenericException;

	public List<StoreInDetailedPo> getStoreInDetailedPoList(String storeInId) throws GenericException;

	public StoreInDetailedPo getStoreInDetailedPo(int id) throws GenericException;

	public StoreInPo getStoreInPo(int storeInId) throws GenericException;

	public List getStoreInDetailedPoListDealValue() throws GenericException;

	public List getRealValue(int id) throws GenericException;

	public List<StoreOutDetailedPo> getStoreOutDetailedPoList(String storeOutId) throws GenericException;

	public List<StoreMaterPo> getStoreMaterPoList(long userId) throws GenericException;

	public List<StoreMaterDetailPo> getStoreMaterDetailPoList(long userId) throws GenericException;

	public List<StoreInDetailedVo> getStoreInDetailedVoList(int storeInId) throws GenericException;

	public StoreOutPo getStoreOutPoByStoreOutId(String storeOutId) throws GenericException;

	public List<StoreOutPo> getStoreOutPoBySupIdAndOrdId(int supId, int OrdId) throws GenericException;

	public int getStoreHouseIdByCustId(String ordCustId) throws GenericException;

	public int getStoreHouseIdBySupId(long supId) throws GenericException;

	public boolean batchSaveMater(Map<Integer, String> map) throws Exception;

	public boolean addStoreMaterIn(String ordId, String ordCustId, String ordSupId, String ordDate) throws GenericException;

	public String pulldownStoreOutWay(int space) throws GenericException;

}
